package com.butang.utils;

import com.butang.pojo.Analysis;
import com.butang.pojo.MetaTagResult;
import com.butang.utils.DataConversion;

import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;

/**
 * ClassName: Conversion
 * Package: com.butang.pojo
 * Description:
 *
 * @Author BuTang
 * @Create 2023/7/6 19:24
 * @Version 1.0
 */
public class Conversion {

    //进行判断，是否需要进行处理
    public static Analysis coversion(MetaTagResult metaTagResult) {
        int conf = metaTagResult.getConf();
        int miniMum = conf % 10 % 10;
        int maxiMum = conf % 10 / 10;
        int description = conf / 100;

        String Value = null;
        String TagValue = metaTagResult.getTagValue();

        if (conf % 10 != 10) {

            if (miniMum == 1) { //需要符号处理
                if (maxiMum != 1) { //需要精度处理
                    //16位
                    //这里需要 有16位符号转无符号，且进行精度处理
                    if (description == 2) { //32位
                        //这里需要 有32位符号转无符号，且进行精度处理
                        Value = String.valueOf((DataConversion.doubleUnsignedToSigned(Integer.valueOf(TagValue))) / Math.pow(10, maxiMum));
                    } else {//16位
                        //这里需要 有16位符号转无符号，且进行精度处理
                        Value = String.valueOf((DataConversion.unsignedToSigned(Integer.valueOf(TagValue))) / Math.pow(10, maxiMum));
                    }
                } else { // 需要符号处理，不需要精度处理
                    if (description == 2) { //32位
                        //这里需要 有32位符号转无符号
                        Value = String.valueOf(DataConversion.doubleUnsignedToSigned(Integer.valueOf(TagValue)));
                    } else {//16位
                        //这里需要 有16位符号转无符号，且进行精度处理
                        Value = String.valueOf(DataConversion.unsignedToSigned(Integer.valueOf(TagValue)));
                    }
                }
            } else { //不需符号处理
                if (maxiMum != 1) { //需要精度处理
                    Value = String.valueOf(Integer.valueOf(TagValue)  / Math.pow(10, maxiMum));
                }
            }
        }
        Timestamp timestamp = new Timestamp(System.currentTimeMillis());

        Analysis analysis  = new Analysis(metaTagResult.getTagID(), timestamp, Value);

        return analysis;
    }
}
